{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "8de68fdf",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-11-03T08:19:01.890504Z",
     "iopub.status.busy": "2025-11-03T08:19:01.890323Z",
     "iopub.status.idle": "2025-11-03T08:19:03.271510Z",
     "shell.execute_reply": "2025-11-03T08:19:03.271295Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前设备: cpu\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "from torch import nn\n",
    "from torch.utils.data import DataLoader\n",
    "from torchvision import datasets, transforms\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 设置随机种子，保持结果稳定\n",
    "torch.manual_seed(0)\n",
    "\n",
    "# 准备数据预处理\n",
    "transform = transforms.ToTensor()\n",
    "\n",
    "# 下载数据集，并使用 DataLoader 方便训练\n",
    "train_dataset = datasets.MNIST(root=\"data\", train=True, download=True, transform=transform)\n",
    "test_dataset = datasets.MNIST(root=\"data\", train=False, download=True, transform=transform)\n",
    "\n",
    "batch_size = 128\n",
    "train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n",
    "test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)\n",
    "\n",
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "print(\"当前设备:\", device)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "78d32137",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-11-03T08:19:03.272571Z",
     "iopub.status.busy": "2025-11-03T08:19:03.272475Z",
     "iopub.status.idle": "2025-11-03T08:19:14.056041Z",
     "shell.execute_reply": "2025-11-03T08:19:14.055829Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 1 轮，训练准确率: 0.8595666666666667 测试准确率: 0.8999\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 2 轮，训练准确率: 0.8971 测试准确率: 0.9083\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 3 轮，训练准确率: 0.9043 测试准确率: 0.9119\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 4 轮，训练准确率: 0.9090333333333334 测试准确率: 0.9149\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 5 轮，训练准确率: 0.9114333333333333 测试准确率: 0.9163\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 6 轮，训练准确率: 0.9143333333333333 测试准确率: 0.9195\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 7 轮，训练准确率: 0.9152166666666667 测试准确率: 0.9194\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 8 轮，训练准确率: 0.9172333333333333 测试准确率: 0.919\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 9 轮，训练准确率: 0.9177166666666666 测试准确率: 0.9205\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 第 10 轮，训练准确率: 0.9189833333333334 测试准确率: 0.9214\n"
     ]
    }
   ],
   "source": [
    "# 单层全连接网络\n",
    "single_layer_model = nn.Sequential(\n",
    "    nn.Flatten(),\n",
    "    nn.Linear(28 * 28, 10)\n",
    ")\n",
    "single_layer_model.to(device)\n",
    "\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = torch.optim.SGD(single_layer_model.parameters(), lr=0.1)\n",
    "\n",
    "epochs = 10\n",
    "\n",
    "single_train_history = []\n",
    "single_test_history = []\n",
    "\n",
    "for epoch in range(epochs):\n",
    "    single_layer_model.train()\n",
    "    total_correct = 0\n",
    "    total_count = 0\n",
    "    total_loss = 0.0\n",
    "    for images, labels in train_loader:\n",
    "        images = images.to(device)\n",
    "        labels = labels.to(device)\n",
    "        optimizer.zero_grad()\n",
    "        outputs = single_layer_model(images)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        total_loss = total_loss + loss.item() * labels.size(0)\n",
    "        preds = outputs.argmax(dim=1)\n",
    "        total_correct = total_correct + (preds == labels).sum().item()\n",
    "        total_count = total_count + labels.size(0)\n",
    "    train_acc = total_correct / total_count\n",
    "\n",
    "    single_layer_model.eval()\n",
    "    test_correct = 0\n",
    "    test_count = 0\n",
    "    with torch.no_grad():\n",
    "        for images, labels in test_loader:\n",
    "            images = images.to(device)\n",
    "            labels = labels.to(device)\n",
    "            outputs = single_layer_model(images)\n",
    "            preds = outputs.argmax(dim=1)\n",
    "            test_correct = test_correct + (preds == labels).sum().item()\n",
    "            test_count = test_count + labels.size(0)\n",
    "    test_acc = test_correct / test_count\n",
    "    single_train_history.append(float(train_acc))\n",
    "    single_test_history.append(float(test_acc))\n",
    "    print(\"单层网络 第\", epoch + 1, \"轮，训练准确率:\", float(train_acc), \"测试准确率:\", float(test_acc))\n",
    "\n",
    "single_train_acc = single_train_history[-1]\n",
    "single_test_acc = single_test_history[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6879d702",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-11-03T08:19:14.057193Z",
     "iopub.status.busy": "2025-11-03T08:19:14.057120Z",
     "iopub.status.idle": "2025-11-03T08:19:28.380315Z",
     "shell.execute_reply": "2025-11-03T08:19:28.380098Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 1 轮，训练准确率: 0.9027333333333334 测试准确率: 0.9505\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 2 轮，训练准确率: 0.9592333333333334 测试准确率: 0.9647\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 3 轮，训练准确率: 0.9723166666666667 测试准确率: 0.968\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 4 轮，训练准确率: 0.9794 测试准确率: 0.9766\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 5 轮，训练准确率: 0.9846166666666667 测试准确率: 0.9786\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 6 轮，训练准确率: 0.9872833333333333 测试准确率: 0.9771\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 7 轮，训练准确率: 0.99015 测试准确率: 0.9795\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 8 轮，训练准确率: 0.9923333333333333 测试准确率: 0.9765\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 9 轮，训练准确率: 0.9933333333333333 测试准确率: 0.9758\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "多层网络 第 10 轮，训练准确率: 0.9945666666666667 测试准确率: 0.9797\n"
     ]
    }
   ],
   "source": [
    "# 多层全连接网络，加两个隐藏层\n",
    "multi_layer_model = nn.Sequential(\n",
    "    nn.Flatten(),\n",
    "    nn.Linear(28 * 28, 256),\n",
    "    nn.ReLU(),\n",
    "    nn.Linear(256, 128),\n",
    "    nn.ReLU(),\n",
    "    nn.Linear(128, 10)\n",
    ")\n",
    "multi_layer_model.to(device)\n",
    "\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = torch.optim.Adam(multi_layer_model.parameters(), lr=0.001)\n",
    "\n",
    "epochs = 10\n",
    "\n",
    "multi_train_history = []\n",
    "multi_test_history = []\n",
    "\n",
    "for epoch in range(epochs):\n",
    "    multi_layer_model.train()\n",
    "    total_correct = 0\n",
    "    total_count = 0\n",
    "    for images, labels in train_loader:\n",
    "        images = images.to(device)\n",
    "        labels = labels.to(device)\n",
    "        optimizer.zero_grad()\n",
    "        outputs = multi_layer_model(images)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        preds = outputs.argmax(dim=1)\n",
    "        total_correct = total_correct + (preds == labels).sum().item()\n",
    "        total_count = total_count + labels.size(0)\n",
    "    train_acc = total_correct / total_count\n",
    "\n",
    "    multi_layer_model.eval()\n",
    "    test_correct = 0\n",
    "    test_count = 0\n",
    "    with torch.no_grad():\n",
    "        for images, labels in test_loader:\n",
    "            images = images.to(device)\n",
    "            labels = labels.to(device)\n",
    "            outputs = multi_layer_model(images)\n",
    "            preds = outputs.argmax(dim=1)\n",
    "            test_correct = test_correct + (preds == labels).sum().item()\n",
    "            test_count = test_count + labels.size(0)\n",
    "    test_acc = test_correct / test_count\n",
    "    multi_train_history.append(float(train_acc))\n",
    "    multi_test_history.append(float(test_acc))\n",
    "    print(\"多层网络 第\", epoch + 1, \"轮，训练准确率:\", float(train_acc), \"测试准确率:\", float(test_acc))\n",
    "\n",
    "multi_train_acc = multi_train_history[-1]\n",
    "multi_test_acc = multi_test_history[-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "490683f4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-11-03T08:19:28.381406Z",
     "iopub.status.busy": "2025-11-03T08:19:28.381340Z",
     "iopub.status.idle": "2025-11-03T08:19:28.382860Z",
     "shell.execute_reply": "2025-11-03T08:19:28.382683Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "单层网络 测试准确率: 0.9214\n",
      "多层网络 测试准确率: 0.9797\n"
     ]
    }
   ],
   "source": [
    "# 打印最终对比结果\n",
    "print(\"单层网络 测试准确率:\", single_test_acc)\n",
    "print(\"多层网络 测试准确率:\", multi_test_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "00f1d1d5",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2025-11-03T08:19:28.383847Z",
     "iopub.status.busy": "2025-11-03T08:19:28.383779Z",
     "iopub.status.idle": "2025-11-03T08:19:28.439676Z",
     "shell.execute_reply": "2025-11-03T08:19:28.439479Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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7dq1ERsbWyZFERERUfVX6hDi4OCAf/75R2/5hQsXYGtrWyZFERERUfVX6hAycOBAjB07Fn///TdUKhVUKhX27duHjz/+GAMGDCiPGomIiKgaKvXZMV999RVu3bqF9u3bw9BQs7parcbgwYM5JoSIiIhK7IWnbY+Ojsb58+ehUCjQqFEj1K5du6xrEw2nbSciInoxpfkOLXVPSAEfHx/4+Pi86OpERERUw5V6TEifPn0we/ZsveVz5sxB3759y6QoIiIiqv5KHUIOHjyIrl276i3v0qULDh48WCZFERERUfVX6hCSnp4OY2NjveVGRkZQKpVlUhQRERFVf6UOIY0aNcKWLVv0lm/evBn169cvk6KIiIio+iv1wNQvv/wSb731Fm7cuIE33ngDABAVFYVNmzbh559/LvMCiYiIqHoqdQjp0aMHIiMjMWvWLPz8889QKBTw8/PDvn37YGNjUx41EhERUTX0wvOEFFAqlfjxxx/xww8/4MyZM1CpVGVVm2g4TwgREdGLKc13aKnHhBQ4ePAgQkJC4OLignnz5uGNN97A8ePHX3RzREREVMOU6nBMfHw81q5dix9++AFKpRL9+vVDdnY2IiMjOSiViIiISqXEPSE9evRA3bp18c8//2DBggW4d+8eFi9eXJ61ERERUTVW4p6QnTt3YuzYsRg5ciSnayciIqKXVuKekMOHDyMtLQ0BAQEICgrCkiVLkJycXJ61ERERUTVW4hDy6quvYtWqVbh//z4+/PBDbN68GS4uLlCr1dizZw/S0tJeuIilS5fCw8MDcrkcQUFBOHnyZLFtc3NzMX36dHh7e0Mul8PPzw+7du3SabNs2TI0btwYFhYWsLCwQIsWLbBz584Xro+IiIjKXqnPjjE1NcWQIUNw+PBhXLx4EZ9++im+/vprODg44M033yx1AVu2bEFYWBimTJmCs2fPws/PD8HBwUhMTCyy/aRJk7BixQosXrwYly9fxogRI9C7d2+cO3dO28bNzQ1ff/01zpw5g9OnT+ONN95Az5498e+//5a6PiIiIiofLz1PCACoVCr89ttvWL16NX799ddSrRsUFITmzZtjyZIlAAC1Wg13d3eMGTMG4eHheu1dXFwwceJEjBo1SrusT58+UCgU2LBhQ7GvY2Njg7lz52Lo0KHPrYnzhBAREb2YCpknpDADAwP06tWr1AEkJycH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",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画出 PyTorch 模型在测试集上的准确率变化\n",
    "plt.figure(figsize=(6, 4))\n",
    "epoch_axis = range(1, len(single_test_history) + 1)\n",
    "plt.plot(epoch_axis, single_test_history, label='Single Layer')\n",
    "plt.plot(epoch_axis, multi_test_history, label='Multi Layer')\n",
    "plt.title('Test Accuracy vs Epochs (PyTorch Models)')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
